home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-04
/
tool_inc.zip
/
POP3.INC
< prev
next >
Wrap
Text File
|
1989-03-01
|
3KB
|
113 lines
(*
* Copyright 1987, 1989 Samuel H. Smith; All rights reserved
*
* This is a component of the ProDoor System.
* Do not distribute modified versions without my permission.
* Do not remove or alter this notice or any other copyright notice.
* If you use this in your own program you must distribute source code.
* Do not use any of this in a commercial product.
*
*)
(*
* popup - utility library for simple "pop-up" windows (3-1-89)
*
*)
type
videoram = array [0..1999] of word;
videoptr = ^videoram;
window_save_rec = record
WindMin: word;
WindMax: word;
TextAttr: integer;
CuX: integer;
CuY: integer;
Image: videoram;
end;
var
{ saved_window: window_save_rec; }
disp_mem: videoptr;
procedure setcolor(fg,bg: integer);
begin
bg := bg and 7;
crt.textcolor(fg);
crt.textbackground(bg);
end;
function make_string(c: char; len: integer): string;
{make a string by repeating a character n times}
var
i: integer;
s: string;
begin
for i := 1 to len do
s[i] := c;
s[0] := chr(len);
make_string := s;
end;
procedure disp (s: string);
begin
write(s);
end;
procedure displn(s: string); {fast display and linefeed}
begin
writeln(s);
end;
procedure window(x1,y1,x2,y2: integer);
var
wx,wy: integer;
begin
wx := wherex + lo(crt.WindMin); {get absolute cursor location}
wy := wherey + hi(crt.WindMin);
crt.window(x1,y1,x2,y2);
if (x1=1) and (y1=1) then
crt.gotoxy(wx,wy);
end;
procedure save_window(var saved: window_save_rec);
(* save the current window so it can be restored later *)
begin
saved.Image := disp_mem^;
saved.WindMin := crt.WindMin;
saved.WindMax := crt.WindMax;
saved.CuX := crt.WhereX;
saved.CuY := crt.WhereY;
saved.TextAttr := crt.TextAttr;
end;
procedure restore_window(saved: window_save_rec);
(* restore the windowing settings *)
begin
disp_mem^ := saved.Image;
window(lo(saved.WindMin)+1, hi(saved.WindMin)+1,
lo(saved.WindMax)+1, hi(saved.WindMax)+1);
crt.GotoXY(saved.CuX,saved.CuY);
crt.TextColor(lo(saved.TextAttr));
crt.TextBackground(hi(saved.TextAttr));
end;
procedure init_pop_up;
{call once before anything else in this library}
begin
if crt.LastMode = crt.Mono then
disp_mem := ptr($B000,0)
else
disp_mem := ptr($B800,0);
window(1,1,80,25);
end;